home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tools / packer / unpacklib / include / libraries / unpack.h next >
C/C++ Source or Header  |  1995-03-09  |  12KB  |  312 lines

  1. /* Unpack Library Include File */
  2.  
  3. #ifndef    UNPACK_H
  4. #define    UNPACK_H
  5.  
  6. #ifndef    EXEC_TYPES_H
  7. #include    <Exec/Types.h>
  8. .endif
  9.  
  10. #ifndef    EXEC_IO_H
  11. #include    <Exec/io.h>
  12. #endif
  13.  
  14. #ifndef    EXEC_LIBRARIES_H
  15. #include    <Exec/Libraries.h>
  16. .endif
  17.  
  18. #ifndef    DOS_DOSEXTENS_H
  19. Sinclude    <dos/dosextens.h>
  20. #endif
  21.  
  22. /* Library Name & Version */
  23.  
  24. #define    UNPACKNAME    "unpack.library"
  25. #define    UnpackVersion    39L
  26. #define    UnpackRevision    54L
  27.  
  28.  
  29. /* Library Base Structure */
  30.  
  31. struct LibraryStruct {
  32.    struct Library LibNode;
  33.    BPTR LIB_SegList;
  34.    APTR LIB_DosBase;
  35.    APTR LIB_IntBase;
  36.    };
  37.  
  38.  
  39. /* Unpack Numbers Structure (V37+) */
  40.  
  41. struct NumberStruct {
  42.    UWORD NS_Version;        /* Library Version */
  43.    UWORD NS_Revision;        /* Library Revision */
  44.    UWORD NS_Types;
  45.    UWORD NS_Unpackers;
  46.    };
  47.  
  48.  
  49. /* Drive Structure (V36+) */
  50.  
  51. struct DriveStruct {
  52.    APTR DRV_UnpackInfo;
  53.    struct IOStdReq *DRV_IOStdReq;
  54.    struct MsgPort *DRV_MsgPort;
  55.    UBYTE DRV_DevName[48];
  56.    UBYTE DRV_DriveName[10];
  57.    };
  58.  
  59.  
  60. /* Unpack Info Structure */
  61.  
  62. struct UnpackInfo {
  63.    APTR UI_Filename;
  64.    APTR UI_Path;
  65.    APTR UI_Jump;
  66.    APTR UI_CruncherName;
  67.    APTR UI_DecrunchAdr;
  68.    LONG UI_DecrunchLen;
  69.    UWORD UI_ErrorNum;
  70.    UWORD UI_CrunchNum;
  71.    UBYTE UI_CrunchType;
  72.    UBYTE UI_Flag;
  73.    APTR UI_LoadNamePoi;
  74.    LONG UI_CrunchLen;
  75.    APTR UI_UserData;        /* V35+ */
  76.    APTR UI_TrackJump;        /* V36+ */
  77.    APTR UI_TrkErrJump;        /* V36+ */
  78.    LONG UI_Offset;        /* V36+ */
  79.    UWORD UI_Track;        /* V36+ */
  80.    APTR UI_ErrorMsg;        /* V37+ */
  81.    APTR UI_CrunchAdr;        /* V37+ */
  82.    APTR UI_LhaPattern;        /* V38+ */
  83.    BOOL8 UI_UseFilenamePointer    /* V39+ */
  84.  
  85. /* This Is Private, Do NOT Touch */
  86.  
  87.    UBYTE UI_Pad
  88.    LONG UI_CrunchLenTemp;
  89.    LONG UI_FileHandler;
  90.    LONG UI_Lock;
  91.    LONG UI_OldLock;
  92.    APTR UI_InfoAdr;
  93.    APTR UI_UnpackPoi;
  94.    ULONG UI_Temp;
  95.    UBYTE UI_Data[16];        /* V35+ */
  96.    UBYTE UI_LoadName[128];
  97.    UBYTE UI_ExecuteString[256];
  98.    };
  99.  
  100.  
  101. /* The UI_Flag Have The Following Definations: */
  102.  
  103. #define    UFB_OneFile    0L        /* This Select To Decrunch One File Or
  104.                        All Files In An Archive. */
  105. #define    UFB_Delete    1L        /* Delete Files After Scanning. */
  106. #define    UFB_NoFree    2L        /* Free Memory After Jump (V35+) */
  107. #define UFB_Banner    3L        /* Give Banner (V36+) */
  108. #define UFB_NoLoad    4L        /* Do Not Load File (V37+) */
  109. #define    UFB_Protect    5L        /* Change Protection Bits (V38+) */
  110.  
  111. #define UFN_OneFile    (1L<<UFB_OneFile)
  112. #define    UFN_Delete    (1L<<UFB_Delete)
  113. #define    UFN_NoFree    (1L<<UFB_NoFree)
  114. #define    UFN_Banner    (1L<<UFB_Banner)
  115. #define    UFN_NoLoad    (1L<<UFB_NoLoad)
  116. #define    UFN_Protect    (1L<<UFB_Protect)
  117.  
  118.  
  119. /* And Now For The UI_CrunchType Flag: */
  120.  
  121. #define    CRU_Archive    1        /* Archive (Lha, Zoo Etc.) */
  122. #define    CRU_Data    2        /* Data File */
  123. #define    CRU_Object    3        /* Object File */
  124. #define    CRU_Object2    4        /* 2 Segment Object File */
  125. #define    CRU_Track    5        /* Track File (DMS) (V36+) */
  126.  
  127. #define    CRUB_Encryp    7L        /* Encrypted File (If Bit Is Set) */
  128.  
  129.  
  130. /* And The Error Flag: */
  131.  
  132. #define    ERR_Open    1        /* Can't Open File */
  133. #define    ERR_ReadWrite    2        /* Read/Write Error */
  134. #define    ERR_Memory    3        /* Allocation Error (Out Of Memory) */
  135. #define    ERR_Determine    4        /* Can't Determine File */
  136. #define    ERR_Password    5        /* Illegal Password */
  137. #define    ERR_Hunk    6        /* Hunk Error */
  138. #define    ERR_Extern    7        /* Extern File Error */
  139.  
  140. #define    ERR_Currupt    8        /* Crunched File Is Currupt (V35+) */
  141.  
  142. #define    ERR_Device    9        /* Illegal Device (V36+) */
  143. #define ERR_DevOpen    10        /* Couldn't Opn Dev. Or Create Port V36+ */
  144. #define    ERR_CRC        11        /* CRC Checksum Error (V36+) */
  145. #define    ERR_CheckSum    12        /* Checksum Error (V36+) */
  146. #define    ERR_Old        13        /* Decruncher In Lib. Too Old (V36+) */
  147. #define    ERR_DevErr    14        /* Error From Device (V36+) */
  148.  
  149. #define    ERR_Protect    15        /* Couldn't Set Protection Bits (V38+) */
  150.  
  151. #define    ERR_Output    16        /* Output File Error (V39+) */
  152.  
  153. /* At Last The Cruncher Numbers: */
  154.  
  155. #define    MaxFilePack    12L
  156.  
  157. #define    CN_Lha        1        /* Lha */
  158. #define    CN_LhaSFX    2L        /* LhaSFX */
  159. #define    CN_Pak10    3L        /* Pak 1.0 */
  160. #define    CN_Dms        4L        /* Dms */
  161.  
  162. #define    CN_GnuPack10D    12L        /* Gnu Packer 1.0 D */
  163. #define    CN_GnuPack12D    13L        /* Gnu Packer 1.1/1.2 D */
  164. #define    CN_GnuPack12Two    14L        /* Gnu Packer 1.1/1.2 Two Segment */
  165. #define    CN_GnuPack10    15L        /* Gnu Packer 1.0 */
  166. #define    CN_GnuPack12    16L        /* Gnu Packer 1.1/1.2 One Segment */
  167. #define    CN_PPData    17L        /* PowerPacker Data */
  168. #define    CN_PPDataE    18L        /* PowerPacker Data/Encrypted */
  169. #define    CN_PPLoadSeg    19L        /* PowerPacker LoadSeg */
  170. #define    CN_PPLib    20L        /* PowerPacker Library */
  171. #define    CN_PPLibE    21L        /* PowerPacker Library/Encrypted */
  172. #define    CN_PPLibOv    22L        /* PowerPacker Library/Overlayed */
  173. #define    CN_PP2x        23L        /* PowerPacker 2.x */
  174. #define    CN_PP30        24L        /* PowerPacker 3.0 */
  175. #define    CN_PP30E    25L        /* PowerPacker 3.0 Encrypted */
  176. #define    CN_PP30Ov    26L        /* PowerPacker 3.0 Overlayed */
  177. #define    CN_PP41        27L        /* PowerPacker 4.0-4.1 */
  178. #define    CN_PP41E    28L        /* PowerPacker 4.0-4.1 Encrypted */
  179. #define    CN_PP41Ov    29L        /* PowerPacker 4.0-4.1 Overlayed */
  180. #define    CN_Turtle13    30L        /* Turtle Smasher 1.3 */
  181. #define    CN_TSqueeze80    31L        /* TurboSqueezer 8.0 */
  182. #define    CN_TSqueeze80S    32L        /* TurboSqueezer 8.0 Small */
  183. #define    CN_TryIt101    33L        /* TryIt 1.01 */
  184. #define    CN_Titanic11    34L        /* Titanics Cruncher 1.1 */
  185. #define    CN_Titanic12    35L        /* Titanics Cruncher 1.2 */
  186. #define    CN_Time22    36L        /* Time Cruncher 1.7-2.2 */
  187. #define    CN_Tetra21    37L        /* TetraPacker 2.1 */
  188. #define    CN_Tetra21Pro    38L        /* TetraPacker 2.1 Pro */
  189. #define    CN_Tetra22    39L        /* TetraPacker 2.2 */
  190. #define    CN_Tetra22Pro    40L        /* TetraPacker 2.2 Pro */
  191. #define    CN_Tetra102    41L        /* TetraCrunch 1.02 */
  192. #define    CN_Tetra11    42L        /* TetraCrunch 1.1 */
  193. #define    CN_Stone299d    43L        /* Stone Cracker 2.99d */
  194. #define    CN_Stone311    44L        /* Stone Cracker 3.11 */
  195. #define    CN_Stone401A    45L        /* Stone Cracker 4.01 A */
  196. #define    CN_Imploder31    46L        /* Imploder 1.0-3.1 */
  197. #define    CN_Imploder31P    47L        /* Imploder 1.0-3.1 Protected */
  198. #define    CN_Imploder31L    48L        /* Imploder 1.0-3.1 Library */
  199. #define    CN_Imploder31LP    49L        /* Imploder 1.0-3.1 Library/Protected */
  200. #define    CN_Imploder40    50L        /* Imploder 4.0 */
  201. #define    CN_Imploder40L    51L        /* Imploder 4.0 Library */
  202. #define    CN_BlkDec21    52L        /* Black & Decker 2.0-2.1 */
  203. #define    CN_BytKil20    53L        /* ByteKiller 2.0 */
  204. #define    CN_BytKil30    54L        /* ByteKiller 3.0 */
  205. #define    CN_TNMCrun11    55L        /* TNM Cruncher 1.1 */
  206. #define    CN_CrunMast10    56L        /* Crunch Master 1.0 */
  207. #define    CN_CrMania14A    57L        /* Crunch Mania 1.4-1.9t A */
  208. #define    CN_CrMania14AP    58L        /* Crunch Mania 1.4-1.8 A/P */
  209. #define    CN_CrMania14D    59L        /* Crunch Mania 1.4-1.9t D */
  210. #define    CN_CrMania18R    60L        /* Crunch Mania 1.4-1.9t R */
  211. #define    CN_CrMania18RS    61L        /* Crunch Mania 1.4-1.9t R/S */
  212. #define    CN_CrMania18RL    62L        /* Crunch Mania 1.8-1.9t R/L */
  213. #define    CN_CrMania18RLH    63L        /* Crunch Mania 1.8-1.9t R/L/H */
  214. #define    CN_CrMania18RH    64L        /* Crunch Mania 1.8-1.9t R/H */
  215. #define    CN_CrMania18DH    65L        /* Crunch Mania 1.8-1.9t D/H */
  216. #define    CN_CrMania18DHS    66L        /* Crunch Mania 1.8-1.9t D/H/S */
  217. #define    CN_CrMania18DS    67L        /* Crunch Mania 1.8-1.9t D/S */
  218. #define    CN_DoubAction10    68L        /* Double Action 1.0 */
  219. #define    CN_DragPack10    69L        /* DragPack 1.0 */
  220. #define    CN_House14    70L        /* House 1.4 (RSI-Packer) */
  221. #define    CN_HPC        71L        /* High Pressure Cruncher */
  222. #define    CN_HPCU        72L        /* High Pressure Cruncher U */
  223. #define    CN_IAM10Ice    73L        /* IAM Packer Pro 1.0 Ice */
  224. #define    CN_IAM10IceD    74L        /* IAM Packer Pro 1.0 Ice/D */
  225. #define    CN_IAM10Atm5    75L        /* IAM Packer Pro 1.0 Atm5 */
  226. #define    CN_IAM10Atm5D    76L        /* IAM Packer Pro 1.0 Atm5/D */
  227. #define    CN_ISC15P1    77L        /* ISC 1.5 Pass 1 */
  228. #define    CN_ISC15P2    78L        /* ISC 1.5 Pass 2 */
  229. #define    CN_ISC15P3    79L        /* ISC 1.5 Pass 3 */
  230. #define    CN_MastCrun31A    80L        /* Master Cruncher 3.0-3.1 A */
  231. #define    CN_MastCrun31R    81L        /* Master Cruncher 3.0-3.1 R */
  232. #define    CN_MastCrun31D    82L        /* Master Cruncher 3.0-3.1 D */
  233. #define    CN_MegaCrun10    83L        /* Megacruncher 1.0 */
  234. #define    CN_MegaCrun12A    84L        /* Megacruncher 1.2 A */
  235. #define    CN_MegaCrun12R    85L        /* Megacruncher 1.2 R */
  236. #define    CN_Defjam36    86L        /* Defjam 3.2-3.6 */
  237. #define    CN_Defjam36Pro    87L        /* Defjam 3.2-3.6 Pro */
  238. #define    CN_PackIt10    88L        /* PackIt 1.0 */
  239. #define    CN_PackIt10D    89L        /* PackIt 1.0 D */
  240. #define    CN_Relokit10    90L        /* Relokit 1.0 */
  241. #define    CN_Spike15    91L        /* Spike Cruncher 1.1-1.5 */
  242. #define    CN_SuperCrun27    92L        /* Super Cruncher 2.7 */
  243. #define    CN_Syncro46    93L        /* Syncro Packer 4.6 */
  244. #define    CN_Syncro46K    94L        /* Syncro Packer 4.6 K */
  245. #define    CN_Syncro46R    95L        /* Syncro Packer 4.6 R */
  246. #define    CN_Syncro46RK    96L        /* Syncro Packer 4.6 R/K */
  247. #define    CN_Stone400    97L        /* Stone Cracker 4.00 */
  248. #define    CN_Stone400D    98L        /* Stone Cracker 4.00 D */
  249. #define    CN_Stone401C    99L        /* Stone Cracker 4.01 C */
  250. #define    CN_Stone401D    100L        /* Stone Cracker 4.01 D */
  251. #define    CN_XpkBLZW    101L        /* XPK-BLZW */
  252. #define    CN_XpkCBR0    102L        /* XPK-CBR0 */
  253. #define    CN_XpkDLTA    103L        /* XPK-DLTA */
  254. #define    CN_XpkFEAL    104L        /* XPK-FEAL */
  255. #define    CN_XpkHUFF    105L        /* XPK-HUFF */
  256. #define    CN_XpkIDEA    106L        /* XPK-IDEA */
  257. #define    CN_XpkIMPL    107L        /* XPK-IMPL */
  258. #define    CN_XpkNONE    108L        /* XPK-NONE */
  259. #define    CN_XpkNUKE    109L        /* XPK-NUKE */
  260. #define    CN_XpkRDCN    110L        /* XPK-RDCN */
  261. #define    CN_XpkRLEN    111L        /* XPK-RLEN */
  262. #define    CN_XpkSHRI    112L        /* XPK-SHRI */
  263. #define    CN_MaxPacker12    113L        /* MaxPacker 1.2 */
  264. #define    CN_PMC        114L        /* PMC Cruncher */
  265. #define    CN_Stone271    115L        /* Stone Cracker 2.6a-2.71 */
  266. #define    CN_Stone271K    116L        /* Stone Cracker 2.6a-2.71 K */
  267. #define    CN_Stone310    117L        /* Stone Cracker 3.10 */
  268. #define    CN_Stone402    118L        /* Stone Cracker 4.02a */
  269. #define    CN_Stone402A    119L        /* Stone Cracker 4.02a A */
  270. #define    CN_Stone402D    120L        /* Stone Cracker 4.02a D */
  271. #define    CN_Stone402L    121L        /* Stone Cracker 4.02a L */
  272. #define    CN_Turtle200    122L        /* Turtle Smasher 2.00 */
  273. #define    CN_Turtle200D    123L        /* Turtle Smasher 2.00 D */
  274. #define    CN_ANC        124L        /* ANC-Cruncher */
  275. #define    CN_DisImp10    125L        /* Discovery File Imploder 1.0 */
  276. #define    CN_HQC20    126L        /* HQC Cruncher 2.0 */
  277. #define    CN_XpkCRM2    127L        /* XPK-CRM2 */
  278. #define    CN_XpkENCO    128L        /* XPK-ENCO */
  279. #define    CN_XpkFAST    129L        /* XPK-FAST */
  280. #define    CN_Stone292    130L        /* Stone Cracker 2.92 */
  281. #define    CN_Stone299    131L        /* Stone Cracker 2.99 */
  282. #define    CN_PCompress29    132L        /* P-Compress 2.9 */
  283. #define    CN_CrMania19AP    133L        /* Crunch Mania 1.9t A/P */
  284. #define    CN_CrMania19AH    134L        /* Crunch Mania 1.9t A/H */
  285. #define    CN_CrMania19AHP    135L        /* Crunch Mania 1.9t A/H/P */
  286. #define CN_TSqueeze61   136L            /* TurboSqueezer 6.1 */
  287. #define    CN_FlashSpeed10    137L        /* FlashSpeed 1.0 */
  288. #define    CN_BytKilPro10    138L        /* ByteKiller 1.0 Pro */
  289. #define    CN_BytKilPro10K    139L        /* ByteKiller 1.0 Pro K */
  290. #define    CN_Stone401bA    140L        /* Stone Cracker 4.01ß A */
  291. #define    CN_TrashEli10    141L        /* Trash Eliminator 1.0 */
  292. #define    CN_Ultimate11b    142L        /* Ultimate Packer 1.1b */
  293. #define    CN_TFA154    143L        /* TFA Cruncher 1.54 */
  294. #define    CN_SExec11    144L        /* S-Exec 1.1 */
  295. #define    CN_Stone4102    145L        /* Stone Cracker 4.10.2 */
  296. #define    CN_Stone4102A    146L        /* Stone Cracker 4.10.2 A */
  297. #define    CN_Stone4102AP    147L        /* Stone Cracker 4.10.2 A/Plain */
  298. #define    CN_Stone4102APr    148L        /* Stone Cracker 4.10.2 A/Pro */
  299. #define    CN_Stone4102D    149L        /* Stone Cracker 4.10.2 D */
  300. #define    CN_Stone4102L    150L        /* Stone Cracker 4.10.2 L */
  301. #define    CN_DragPack252    151L        /* DragPack 2.52 */
  302. #define    CN_DragPack252D    152L        /* DragPack 2.52 D */
  303. #define    CN_Stone300    153L        /* Stone Cracker 3.00 */
  304. #define    CN_Stone300D    154L        /* Stone Cracker 3.00 D */
  305. #define    CN_Stone300K    155L        /* Stone Cracker 3.00 K */
  306. #define    CN_XpkSQSH    156L        /* XPK-SQSH */
  307.  
  308. /* This Label Will Be Deleted Later On */
  309.  
  310. #define    CN_ComCra11    CN_TNMCrun11    /* Compressor Crackings Inc. V1.1 */
  311. #endif
  312.